package editor;

/**
 * Clase Matriz, corresponde al editor de niveles. Mantien en sus componentes un string 
 * indicando que que objetos hay en esa posición del mapa. 
 * @author Javier Amorosi,Nehuen Antiman.
 */
public class Matriz {
	
	private String [][] matriz;
	
	/**
	 * Inicializa una matriz de f filas y c columnas con asfalto por defecto.
	 * @param f filas de la nueva matriz.
	 * @param c columnas de la nueva matriz.
	 */
	public Matriz(int f,int c){
		matriz = new String [f][c];
		for(int i=0;i<f;i++){
			for(int j=0;j<c;j++){
				matriz[i][j]="A";
			}
		}
	}
	
	/**
	 * Cambia el piso de la fila f y columna c por la cadena aux.
	 * @param f fila.
	 * @param c columna.
	 * @param aux nueva componente en la posicion (f,c). 
	 */
	public void cambiarPiso(int f,int c,String aux){
		matriz[f][c]=aux;
	}
	
	private String generarCadena(){
		String toR="";
		for(int i=0;i<matriz.length;i++){
			for(int j=0;j<matriz[0].length;j++){
				toR=(toR+matriz[i][j]+";");
				if(j==matriz[0].length-1)
					toR=toR+"\n";
			}
		}
		return toR;
	}
	
	/**
	 * Devuleve la cadena formada por todos los pisos.
	 * en caso de que la cadena no sea válida, devuelve una cadena nula.
	 * @return cadena de Strings que representa un mapa del juego. 
	 */
	public String retornarCadena() {
		int inicio=0;
		int fin=0;
		String aux = generarCadena();
		for(int i=0;i<aux.length();i++){
			if(aux.charAt(i)=='@')
				inicio++;
			if(aux.charAt(i)==('#'))
				fin++;
		}
		if((fin!=1)||(inicio!=1))
				aux= null;
		return aux;
	}

}
